import { ref } from "vue";
import { organizationApi } from "@/api/authority";
import { IObject } from "@/types/interface";

// 下级组织数据接口 - 根据API文档修正
interface OrganizationData {
  id: number;                     // 根据API文档，id是number类型
  organizationName: string;       // 组织名称
  countryRegion: string;          // 国家/地区 - API文档中有时是string，有时是number
  organizationEmail: string;      // 组织邮箱
  organizationType: number;       // 组织类型 - API文档中是integer
  organizationAddr: string;       // 组织地址 - 新增字段
  note: string;                   // 备注 - 新增字段
  adminName: string;              // 管理员姓名
  adminEmail: string;             // 管理员邮箱 - 新增字段
  adminPhone: string;             // 管理员电话 - 新增字段
  createTime: string;             // 创建时间
  modifyTime: string;             // 修改时间
  modifyUser: string;             // 修改用户
}

// 查询参数接口 - 根据API文档修正
interface QueryParams {
  page?: number;                  // 页码
  limit?: number;                 // 每页显示记录数 - API文档中是limit，不是pageSize
  organizationName?: string;      // 组织名称
}

// 新增组织参数接口 - 根据API文档修正
interface CreateOrganizationData {
  organizationType: number;       // 单选 1:安装商,2:经销商
  organizationName: string;       // 组织名字
  countryRegion: string;          // 德国、法国
  organizationAddr: string;       // 组织地区
  organizationEmail: string;      // 组织邮件
  note?: string;                  // 备注 - 可选
  adminName: string;              // 管理员姓名
  adminEmail: string;             // 管理员邮件
  adminPhone: string;             // 管理员电话
  // 后端更新接口不需要 modifyUser，删除避免 500
}

// 修改组织参数接口 - 根据API文档修正
interface UpdateOrganizationData {
  id: string | number;            // 组织id - 可能是string或number
  organizationType: number;       // 组织类型
  organizationName: string;       // 组织名称
  countryRegion: string;          // 国家/地区
  organizationAddr: string;       // 组织地址
  note?: string;                  // 备注 - 可选
  adminName: string;              // 管理员姓名
  adminPhone: string;             // 管理员电话
  // 后端更新接口不需要 modifyUser，删除避免 500
}

// 模拟组织数据 - 注释掉，使用真实API
/*
const mockOrganizations: OrganizationData[] = [
  {
    id: "1",
    type: "Installer",
    name: "Berlin Installer Co.",
    country: "Germany",
    address: "Alexanderplatz 1, 10178 Berlin, Germany",
    email: "berlin@example.com",
    note: "Premium partner",
    adminName: "Hans Schmidt",
    adminEmail: "hans@example.com",
    adminPhone: "+49 30 12345678",
    status: true,
    createTime: "2024-02-10 09:00:00",
    updateTime: "2024-02-10 09:00:00"
  },
  // ... 其他模拟数据
];

// 生成更多测试数据
for (let i = 6; i <= 50; i++) {
  // ... 生成逻辑
}
*/

// 获取组织列表 - 调用真实API
export const getOrganizationList = async (params: QueryParams) => {
  try {
    // 使用组织分页查询接口
    const response = await organizationApi.getPage(params);
    if (response.code === 0) {
      return {
        list: response.data.list || [],
        totalCount: response.data.total || 0
      };
    } else {
      console.error('获取组织列表失败:', response.msg);
      return { list: [], totalCount: 0 };
    }
  } catch (error) {
    console.error('获取组织列表错误:', error);
    return { list: [], totalCount: 0 };
  }
};

// 添加组织 - 调用真实API
export const addOrganization = async (orgData: CreateOrganizationData) => {
  try {
    // 使用新增组织接口
    const response = await organizationApi.create(orgData);
    if (response.code === 0) {
      return { success: true, data: response.data, message: '组织添加成功' };
    } else {
      return { success: false, message: response.msg || '组织添加失败' };
    }
  } catch (error) {
    console.error('添加组织错误:', error);
    return { success: false, message: '添加失败' };
  }
};

// 更新组织 - 调用真实API
export const updateOrganization = async (orgData: UpdateOrganizationData) => {
  try {
    console.log('更新组织数据:', orgData); // 调试日志
    // 使用修改组织接口
    const response = await organizationApi.update(orgData);
    console.log('更新组织响应:', response); // 调试日志
    if (response.code === 0) {
      return { success: true, data: response.data, message: '组织更新成功' };
    } else {
      return { success: false, message: response.msg || '组织更新失败' };
    }
  } catch (error) {
    console.error('更新组织错误:', error);
    return { success: false, message: '更新失败' };
  }
};

// 删除组织 - 调用真实API
// export const deleteOrganization = async (ids: string[]) => {
//   try {
//     // 使用删除组织接口 - 根据API文档，删除接口接收数组
//     const response = await organizationApi.delete(ids);
//     if (response.code === 0) {
//       return { success: true, data: response.data, message: '组织删除成功' };
//     } else {
//       return { success: false, message: response.msg || '组织删除失败' };
//     }
//   } catch (error) {
//     console.error('删除组织错误:', error);
//     return { success: false, message: '删除失败' };
//   }
// };

// 获取组织详情 - 调用真实API
export const getOrganizationById = async (id: string | number) => {
  try {
    // 使用组织id查询接口
    const response = await organizationApi.getById(String(id));
    if (response.code === 0) {
      return { success: true, data: response.data };
    } else {
      return { success: false, message: response.msg || '获取组织详情失败' };
    }
  } catch (error) {
    console.error('获取组织详情错误:', error);
    return { success: false, message: '获取详情失败' };
  }
};

// 格式化日期 - 保留用于其他用途
const formatDate = (date: Date) => {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, "0");
  const day = String(date.getDate()).padStart(2, "0");
  const hours = String(date.getHours()).padStart(2, "0");
  const minutes = String(date.getMinutes()).padStart(2, "0");
  const seconds = String(date.getSeconds()).padStart(2, "0");

  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
};
